package site.xuqing.appbus.queue;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author xuqing
 * @Description EventQueue
 * @createTime 2022年01月26日 08:53:54
 */
public class EventQueue {
    private final Map<String, List> queue = new HashMap<>();
    
    /**
     * 入队
     * @param route route
     * @param msg 需要入队的数据
     * @param <T> T 数据类型
     */
    public <T> void inQueue(String route, T msg) {
        List<T> msgList;
        if (queue.containsKey(route)) {
            msgList = queue.get(route);
            if (msgList == null) {
                msgList = new ArrayList<>();
            }
        } else {
            msgList = new ArrayList<>();
        }
        msgList.add(msg);
        queue.remove(route);
        queue.put(route, msgList);
    }
    
    /**
     * 出队
     * @param route route
     * @param <T> 数据类型
     * @return 数据
     */
    public <T> List<T> outQueue(String route) {
        if (queue.containsKey(route)) {
            List<T> msgList = queue.get(route);
            queue.remove(route);
            return msgList;
        }
        return new ArrayList<>();
    }
    
    public void clear() {
        queue.clear();
    }
}
